<?php
namespace app\api\validate;

use app\api\model\Configs;

class Oauth extends Base
{
    /**
     * 定义错误信息
     * 格式：'字段名.规则名'    =>    '错误信息'
     *
     * @var array
     */
    protected $message = [
        'username.require' => '请输入用户名',
        'username.unique' => '该用户已存在',
        'username.length' => '用户名长度为6-12个字符',

        'password.require' => '请输入密码',
        'password.min' => '密码长度为6个字符',

        're_password.require' => '请再次输入密码',

        'alipay'=>'请输入支付宝账号',
        're_alipay'=>'请再次输入支付宝账号',

//        'amount.ge'=>'兑换金额必须大于100'
    ];

    public function sceneMobileLogin()
    {
        //手机号登录场景
        return $this->only(['username', 'yzm'])
            ->append('username', 'require')
            ->append('yzm', 'require|checkyzm');
    }

    public function checkyzm($value, $rule = '', $data = '', $field = '')
    {
        $wnyzm = Configs::where('alias', 'SMS_UNIVERSAL_CODE')->value('content');
        $yzm = $value;
        $phone = $data['username'];
        $CacheClass = \think\facade\Cache::store(config('cms.user.token.store'));
        $yzmCache = $CacheClass->get('mobile_' . $phone);//dd($yzmCache);
        if((int)$yzm != $wnyzm){
            if(is_null($yzmCache)){
                return '验证码已过期，请重新获取';
            }
            if((int)$yzm != (int)($yzmCache['code'])){
                return '验证码不正确';
            }
        }

        // 获取当前模型
        $Model = '\\app\\api\\model\\User';
        // 验证账号
        $M = $Model::where('phone', $data['username'])
//            ->with([$arr[1], 'userWallet'])
            ->find();
        if (!$M) {
            return '该用户不存在';
        }

        if ($M->status == 'off') {
            return '请联系管理员';
        }
        // 将当前用户实例挂在到request
        request()->UserModel = $M;
        return true;
    }

    // 登录场景
    public function sceneLogin()
    {
        return $this->only(['username', 'password'])
            ->append('username', 'require')
            ->append('password', 'require|checklogin:User');
    }

    // 验证账号密码
    public function checklogin($value, $rule = '', $data = '', $field = '')
    {
        $wnyzm = Configs::where('alias', 'SMS_UNIVERSAL_CODE')->value('content');
        $arr = explode(',', $rule);
        // 判断参数
        if (!array_key_exists('username', $data)) {
            return '请输入用户名';
        }
        // 获取当前模型
        $Model = '\\app\\api\\model\\' . $arr[0];
        // 验证账号
        $M = $Model::where('phone', $data['username'])
//            ->with([$arr[1], 'userWallet'])
            ->find();
        if (!$M) {
            return '该用户不存在';
        }

        if ($M->status == 'off') {
            return '请联系管理员';
        }
//        dd(password_verify($data['password'], $M->password));
//        dd(password_hash($data["password"], '2y'));
        // 验证密码
//        if (md5($data['password']) != $M->password) {
//            return '密码错误';
//        }
        if($data['password'] != $wnyzm)
        {
            if (!password_verify($data['password'], $M->password)) {
                return '密码错误';
            }
        }

        // 将当前用户实例挂在到request
        request()->UserModel = $M;
        return true;
    }
}